package com.zynote.nfhoujie.web.controller;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.zynote.commons.utils.InitSetting;
import com.zynote.commons.utils.Page;
import com.zynote.nfhoujie.commons.constants.SettingConstants;
import com.zynote.nfhoujie.service.ICommodityService;
import com.zynote.nfhoujie.model.view.MultiCommodityView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * 
 * @className:CommodityController.java
 * @classDescription:商品页面管理
 * @author: AIDAN SU
 * @createTime: 2012-10-25
 *
 */

@Controller
@RequestMapping(value="/commodity")
public class CommodityController {

	@Resource
	private ICommodityService commodityService ;
	
	/**
	 * 跳转到商品添加页面
	 * @return
	 */
	@RequestMapping(value="/add" ,method = RequestMethod.GET)
	public String addCommodity( ModelMap modelMap, HttpServletRequest request ){
		
		// 通过参数获取商品的类型
		String cp = request.getParameter("cp");
		// 商品类型值
		int categoryParent = 0;
		// 跳转的页面地址
		String url = null;
		
		if(StringUtils.isNotEmpty(cp)){
			// 传入的参数不为空则进行类型转换
			categoryParent = Integer.parseInt(cp);
		}
		
		switch(categoryParent){
			case 1000:{
				url = "/commodity/book_add";
				break;
			}case 2000:{
				url = "/commodity/digital_add";
				break;
			}case 3000:{
				url = "/commodity/daily_add";
				break;
			}case 4000:{
				url = "/commodity/jobs_add";
				break;
			}case 0:{
				// 获取不到参数，异常处理，跳转到错误页
				url = "";
				break;
			}
		}
		return url;
	}
	
	/**
	 * 所有商品列表
	 * @param modelMap
	 * @param request
	 * @return
	 */
	@RequestMapping( value="/list/all", method =RequestMethod.GET)
	@ResponseBody
	public String commodityList(ModelMap modelMap, HttpServletRequest request){
		// 返回的json数据
		String jsonResult = "" ;
		// 商品总数
		int total = 0 ;
		// 商品列表开始位置
		int startPosition = 0;
		
		try {
			
			// 分页大小
			int pageSize = 0;
			// 通过配置文件获取列表的分页大小
			String perPageSize = InitSetting.getValueByKey(SettingConstants.COMMODITY_PER_PAGE_SIZE);
			if(perPageSize!= null && !"".equals(perPageSize)){
				pageSize = Integer.valueOf(perPageSize).intValue();	
			}else{
				// 如果获取不到，则默认分页大小为45
				pageSize = 45;
			}
			
			String offset = request.getParameter("offset");
			if( !StringUtils.isEmpty(offset) ){
				startPosition = Integer.parseInt(offset)*pageSize;
			}
			
			// 统计商品总数
			total = commodityService.countAllCommoditys();
			
			if(total>0){
				
				// 获取商品分页数据
				List<MultiCommodityView> commodityList = commodityService.listAllCommoditys(startPosition, pageSize);
				
				Page page = new Page();
				page.setDatas(commodityList);
				page.setPageSize( pageSize );
				page.setTotal( total );
				
				//转为json数据
				Gson gson = new Gson();
				jsonResult = gson.toJson(page);
			}        
	        
		} catch (Exception e) {
			e.printStackTrace();
		}
		return jsonResult;
	}
	
	/**
	 * 所有分类商品
	 * @param modelMap
	 * @param request
	 * @return
	 */
	@RequestMapping( value="/list/type", method =RequestMethod.GET)
	@ResponseBody
	public String commodityTypeList(ModelMap modelMap, HttpServletRequest request){
		// 返回的json数据
		String jsonResult = "" ;
		// 商品总数
		int total = 0 ;
		// 商品列表开始位置
		int startPosition = 0;
		// 商品类型编号
		int typeNumber = 0;
		
		try {
			// 分页大小
			int pageSize = 0;
			
			// 通过配置文件获取列表的分页大小
			String perPageSize = InitSetting.getValueByKey(SettingConstants.COMMODITY_PER_PAGE_SIZE);
			if(perPageSize!= null && !"".equals(perPageSize)){
				pageSize = Integer.valueOf(perPageSize).intValue();	
			}else{
				// 如果获取不到，则默认分页大小为45
				pageSize = 45;
			}
			
			// 从传递的参数中获取开始位置
			String offset = request.getParameter("offset");
			if( !StringUtils.isEmpty(offset) ){
				startPosition = Integer.parseInt(offset)*pageSize;
			}
			
			// 从参数中获取商品的类型
			String type = request.getParameter("type");
			if( !StringUtils.isEmpty(type) ){
				typeNumber = Integer.parseInt(type);
			}
			
			// 统计商品总数
			total = commodityService.countTypeCommoditys(typeNumber);
			
			if(total>0){
				
				// 获取商品分页数据
				List<MultiCommodityView> commodityList = commodityService.listTypeCommoditys(startPosition, pageSize,typeNumber);
				
				Page page = new Page();
				page.setDatas(commodityList);
				page.setPageSize( pageSize );
				page.setTotal( total );
				
				//转为json数据
				Gson gson = new Gson();
				jsonResult = gson.toJson(page);
			}        
	        
		} catch (Exception e) {
			e.printStackTrace();
		}
		return jsonResult;
	}
	
	
	
	
}
